package com.v3admin.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.v3admin.system.domain.SystemMenu;

import java.util.List;

/**
 * 系统菜单
 *
 * @author Junpeng.Li
 * @date 2023-12-15 16:33
 */
public interface SystemMenuService extends IService<SystemMenu> {

    /**
     * 查找指定父级菜单下面的所有子菜单(只查询一级)
     *
     * @param pid 父级菜单的ID
     * @return 子菜单
     */
    List<SystemMenu> findByPid(Long pid);

    /**
     * 查找指定父级菜单下面的所有子菜单(包含子菜单的子菜单)
     *
     * @param pid 父级菜单的ID
     * @return 子菜单列表
     */
    List<SystemMenu> findByPidDeep(Long pid);

    /**
     * 将菜单转成树结构
     * <p>
     * <br/>
     * <p>
     * 使用{@link cn.hutool.core.lang.tree.TreeUtil}进行转换
     *
     * @param menus 需要转换的菜单集合, 数据是平铺的(父级菜单和子菜单是同级)
     * @return 转换后的菜单集合, 子菜单都在children属性中
     */
    List<SystemMenu> toTree(List<SystemMenu> menus);
}
